// 用户管理模块的接口
import request from '@/utils/request'
// 获取全部用户数据类型
import type { User, UserResponseData, AllRoleResponseData, AssignRolesParamsData } from '@/api/acl/user/type'

// 枚举地址
enum API {
  ALLUSER_URL = '/admin/acl/user/',
  // 新增用户的URL
  ADDUSER_URL = '/admin/acl/user/save',
  // 更新已有用户的URL
  UPDATEUSER_URL = '/admin/acl/user/update',
  // 根据用户获取角色的URL
  ALLROLE_URL = '/admin/acl/user/toAssign/',
  // 根据用户分配角色
  ASSIGNROLE_URL = '/admin/acl/user/doAssignRole',
  // 删除指定用户
  DELETEUSER_URL = '/admin/acl/user/remove/',
  // 批量删除用户
  BATCHDELETEUSER_URL = '/admin/acl/user/batchRemove'
}

// 获取全部账号信息的接口(还可以通过传query参数来过滤用户的信息)
export const reqAllUser = (pageNo: number, limit: number, username: string) => request.get<any, UserResponseData>(API.ALLUSER_URL + `${pageNo}/${limit}?username=${username}`)

// 添加用户与更新已有用户接口
export const reqAddOrUpdateUser = (userData: User) => {
  // 有用户id表示更新已有的用户，没有用户id表示新增用户
  if (userData.id) {
    return request.put<any, any>(API.UPDATEUSER_URL, userData)
  } else {
    return request.post<any, any>(API.ADDUSER_URL, userData)
  }
}

// 根据用户获取角色的接口
export const reqAllRole = (userId: number) => request.get<any, AllRoleResponseData>(API.ALLROLE_URL + userId)

// 根据用户分配角色
export const reqAssignUserRole = (data: AssignRolesParamsData) => request.post<any, any>(API.ASSIGNROLE_URL, data)

// 删除一个用户
export const reqDeleteUser = (userId: number) => request.delete<any, any>(API.DELETEUSER_URL + userId)

// 批量删除用户
export const reqBatchDeleteUser = (idList: number[]) => request.delete<any, any>(API.BATCHDELETEUSER_URL, { data: idList })